<?php 
/**
 * Categories V1
 * 
 * Permet d'administrer les catégories
 * 
 * @package : dmi
 * @author : Filament (Etienne Sainton)
 * @since : 16/04/11
 * @version : 0.1
 */
include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
include($phpbb_root_path . 'includes/class_categories.' . $phpEx);

//On initialise les informations et les erreurs :
$infos = array();
$erreurs = array();		
		
class dmi_categories
{
	var $u_action;
	var $permission_dropdown;
	
	function main($id, $mode)
	{
		global $db, $user, $auth, $template, $cache;
		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
		global $infos, $erreurs;
		
		//Valeur par défaut pour le template et les langues :
		$user->add_lang('dmi/general');
		add_permission_language();	
		$template->assign_vars(array(
			"USER_SID" => $user->data['session_id'],
		));

		//On prend le mode courant
		$mode = utf8_normalize_nfc(request_var('mode', '', true));
		
		//On récupère $action
		$action = utf8_normalize_nfc(request_var('action', '', true));
		
		//On exécute les actions à faire  :
		switch($action)
		{
			case 'edit_categorie' :
				//Histoire de ne pas recalculer tout l'arbre, on va supprimer l'actuel et en créer un nouveau : :
				 $edit = 1;
			case 'delete_categorie' :
				//Quelle catégorie doit on supprimer ?
				$id_cat = request_var('id_cat', 0);
				if($id_cat == 0) 
					$erreurs[] = utf8_normalize_nfc("La catégorie à supprimer n'est pas valable");
				else {
					//On construit l'objet :
					$deleteCat = new Categorie($id_cat);
					
					//Et on le supprime de la bdd :
					$deleteCat->deleteCat();
				}
				
				if(isset($edit) && $edit == 1)
			 		;
			 	else	
					break;
					
			case 'add_categorie' :
				//Est ce que l'utilisateur a bien fourni toutes les informations ?
				$titre = utf8_normalize_nfc(request_var('titre', '', true));
				if($titre == '')
					$erreurs[] =  utf8_normalize_nfc('Vous devez proposer un titre pour la catégorie');
				$logo =  utf8_normalize_nfc(request_var('logo', '', true));
				$style = utf8_normalize_nfc(request_var('style', '', true));
			 	$parent = request_var('parent', 0);
			 	$squelette = utf8_normalize_nfc(request_var('squelette', '', true));
			 	$color = utf8_normalize_nfc(request_var('color', '', true));
			 				 	
			 	//Si pas d'erreurs alors on ajoute la catégorie :
			 	if(empty($erreurs)) {
			 		if(isset($edit) && $edit == 1)
			 			$newCat = new Categorie($id_cat, $titre, $logo, $style, $parent, $squelette, $color);
			 		else
			 			$newCat = new Categorie($titre, $logo, $style, $parent, $squelette, $color);
			 		$mode = 'voir';
			 	}else
			 		$mode = 'ajout_categorie';
			 	
			 	break;
		}
		
		//Et maintenant on prépare l'affichage des informations :
		switch($mode)
		{
			case "ajout_categorie" :
				$this->tpl_name = 'categories/ajout';
				
				//Si l'utilisateur a déjà renseigné des valeurs on les renvoie au template
				if($action == 'add_categorie') {
					$template->assign_vars(array(
						'TITRE' => $titre,
						'LOGO' => $logo,
						'STYLE' => $style,
						'PARENT' => $parent,
						'SQUELETTE' => $squelette,
						'COLOR' => $color
					));
				}
				
				$template->assign_var('LINK', append_sid('index.php?i=categories&mode=ajout_categorie&action=add_categorie'));
				
				//Pour sélectionner le parent :
				listCategories();
				
				break;
			case "edit_categorie" :
				$this->tpl_name = 'categories/ajout';
				
				//Quelle catégorie met on à jour ?
				$id_cat = request_var('id_cat', 0);
				
				if($id_cat == 0)
					$erreurs[] = utf8_normalize_nfc('Il faut sélectionner une catégorie pour la modifier');
				else {
					//Hop on l'instancie
					$cat = new Categorie($id_cat);

					$template->assign_vars(array(
						'TITRE' 	=> $cat->getTitre(),
						'LOGO' 		=> $cat->getLogo(),
						'STYLE' 	=> $cat->getStyle(),
						'PARENT' 	=> $cat->getParent(),
						'SQUELETTE' => $cat->getSquelette(),
						'COLOR' 	=> $cat->getColor(),
						'LINK'		=> append_sid('index.php?i=categories&mode=edit_categorie&action=edit_categorie&id_cat='.$id_cat)
					));
				}
				
				//Pour sélectionner le parent :
				listCategories();
				
				break;
			case "delete_categorie" :
			case "voir" : 
			default :
				$this->tpl_name = 'categories/voir';	
				
				//On affiches la liste des catégories
				listCategories();
				break;
		}
		
		//Si jamais on a une information à afficher, on l'affiche :
		if(!empty($infos)) {
			foreach ($infos as  $info_msg)
			{
				//Cette méthode permet de confirmer les actions
				$template->assign_block_vars('infos_membre', array(
					'INFO_MSG'  => $info_msg,
				));
			}
		}

		//On envoie les erreurs relevées si erreurs il y a :
		if(!empty($erreurs)) {
			foreach ($erreurs as  $erreur_msg)
			{
				//Cette méthode permet de faire varier sans soucis le nombre d'erreurs afin de 							// guider au mieux le rédacteur du dossier
			    $template->assign_block_vars('erreurs', array(
					'ERREUR_MSG'  => $erreur_msg,
				    ));
			}
		}
	}
}

?>
